package com.example.xpvideo.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

/**
 * 订单表
 * @TableName ls_order
 */
@TableName(value ="ls_order")
@Data
public class Order implements Serializable {
    /**
     * 订单id
     */
    @TableId(type = IdType.AUTO)
    private Integer id;

    /**
     * 交易订单id(父订单id)
     */
    private Integer tradeId;

    /**
     * 店铺id
     */
    private Integer shopId;

    /**
     * 订单编号
     */
    private String orderSn;

    /**
     * 用户id
     */
    private Integer userId;

    /**
     * 订单类型;0-普通订单
     */
    private Byte orderType;

    /**
     * 订单来源;1-app 2-pc
     */
    private Byte orderSource;

    /**
     * 订单状态;0-待付款;1-待发货;2-待收货;3-已完成;4-已关闭
     */
    private Byte orderStatus;

    /**
     * 支付状态;0-待支付;1-已支付;2-已退款;3-拒绝退款
     */
    private Byte payStatus;

    /**
     * 配送方式：0-快递配送；
     */
    private Byte deliveryType;

    /**
     * 1-微信支付  2-支付宝支付 3-余额支付  4-线下支付
     */
    private Byte payWay;

    /**
     * 支付时间
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date payTime;

    /**
     * 收货人
     */
    private String consignee;

    /**
     * 省份
     */
    private Integer province;

    /**
     * 城市
     */
    private Integer city;

    /**
     * 县区
     */
    private Integer district;

    /**
     * 地址
     */
    private String address;

    /**
     * 手机
     */
    private String mobile;

    /**
     * 订单商品总价
     */
    private BigDecimal goodsPrice;

    /**
     * 优惠金额
     */
    private BigDecimal discountAmount;

    /**
     * 订单总价
     */
    private BigDecimal totalAmount;

    /**
     * 订单商品数量
     */
    private Integer totalNum;

    /**
     * 发货状态
     */
    private Byte shippingStatus;

    /**
     * 运费
     */
    private BigDecimal shippingPrice;

    /**
     * 最后新发货时间
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date shippingTime;

    /**
     * 第三方平台交易流水号
     */
    private String transactionId;

    /**
     * 用户备注
     */
    private String userRemark;

    /**
     * 确认收货时间
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date confirmTakeTime;

    /**
     * 订单取消时间
     */
    private Date cancelTime;

    /**
     * 退款状态：0-未退款；1-部分退款；2-全部退款
     */
    private Byte refundStatus;

    /**
     * 结算id；0-未结算
     */
    private Integer settleId;

    /**
     * 结算金额
     */
    private Integer settleAmount;

    /**
     * 退款金额
     */
    private BigDecimal refundAmount;

    /**
     * 删除标识;1-删除;0-未删除
     */
    private Byte del;

    /**
     * 下单时间
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createTime;

    /**
     * 更新时间
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date updateTime;

    /**
     * 用户优惠券id
     */
    private Integer couponListId;

    /**
     * 订单备注
     */
    private String orderRemarks;

    /**
     * 标识子订单是否已评价
0-所有子订单未评价
1-部分子订单已评价
2-所有子订单已评价
     */
    private Byte isComment;

    /**
     * 一级分润
     */
    private BigDecimal distributionMoney;

    /**
     * 二级分润
     */
    private BigDecimal firstRatio;

    /**
     * 标识子订单是否是直接退款，0表示售后退款或者未退款，1表示直接退款
     */
    private Byte secondRatio;

    /**
     * 商家删除：1-删除；0-未删除
     */
    private Byte delete;

    @TableField(exist = false)
    private static final long serialVersionUID = 1L;
}